Generally described, computing devices can be utilized in a variety of contexts, such as for exchanging information, facilitating communication between users, facilitating the operation and control of a wide variety devices and processes, and the like. In the context of a manufacturing or production environment, a computing network made up of a number of computing devices, including personal computing devices, server computing devices, programmable logic controllers (PLCs), or other networked devices can be utilized in conjunction with a communication network, such as the Internet, to facilitate the operation and control of various devices/processes. For example, a networked PLC may be utilized to control the operation of physical manufacturing or processing equipment, such as controllers for valves, power supplies, pumps, machinery, etc. Similarly, a software application, or suite of software applications, may be hosted on a networked computing device, such as a server or personal computing device, to receive instructions regarding the operation of various equipment and transmit respective instructions to the appropriate equipment, such as through a PLC.
A fault in one or more networked computing devices, such a fault in a computing device, can lead to the failure of associated equipment, loss of manufacturing/production time, property damage, and the like. Accordingly, manufacturing/production computing networks, including hardware and software aspects, can be designed with redundant components to avoid fault conditions during execution in a manufacturing/production environment. For example, a PLC may include a “fail safe” mode such that in the event of a fault, the outputs from the PLC mitigate potential damage to attached equipment or errant instructions that could cause additional faults/damage.
Computing systems can be tested to verify that requirements for safety and redundancy are met and to discover errors in design/implementation. For example, a testing system can be implemented, such as in a laboratory, that attempts to emulate various commands, instructions, or other environmental information over a network, and then measure the response generated by the computing device(s) being tested, generally referred to as the “device under test” or “system under test.” The emulated commands, instructions, or other environment information can be embodied as a test case or testing procedure that can be executed by a testing system. More specifically, in one aspect, the generation of test cases or testing procedures for computing device testing involves the utilization of testing grammars from which test cases/testing procedures can be derived. Generally described, grammar based test generation involves specifying a grammar which describes a language consisting of a set of strings. The grammar can be processed by a testing system and utilized to derive test cases corresponding to strings in the language specified by the grammar.